package cn.iocoder.yudao.module.product.favorite.dal.mysql;

import cn.iocoder.yudao.framework.business.basic.dao.query.CoreLambdaQueryWrapper;
import cn.iocoder.yudao.framework.business.interest.dao.InterestMapper;
import cn.iocoder.yudao.module.product.favorite.dal.dataobject.ProductFavoriteDO;
import jakarta.annotation.Nullable;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;
import java.util.Set;

@Mapper
public interface ProductFavoriteMapper extends InterestMapper<ProductFavoriteDO> {

    @Override
    default ProductFavoriteDO selectOneByBizIdAndUserId(Long bizId, Long userId, @Nullable Boolean recycled) {
        CoreLambdaQueryWrapper<ProductFavoriteDO> wrapper = new CoreLambdaQueryWrapper<>();
        wrapper.eq(ProductFavoriteDO::getSpuId, bizId);
        wrapper.eq(ProductFavoriteDO::getUserId, userId);
        wrapper.eqIfPresent(ProductFavoriteDO::getRecycled, recycled);
        wrapper.limitN(1);
        return selectOne(wrapper);
    }

    @Override
    default List<ProductFavoriteDO> selectListByBizIdsAndUserId(Set<Long> bizIds, Long userId) {
        CoreLambdaQueryWrapper<ProductFavoriteDO> wrapper = new CoreLambdaQueryWrapper<>();
        wrapper.inIfPresent(ProductFavoriteDO::getSpuId, bizIds);
        wrapper.eq(ProductFavoriteDO::getUserId, userId);
        return selectList(wrapper);
    }

}